//
// Created by Senhai Xu on 2025/3/19.
//
#include <iostream>
#include <thread>
#include <mutex>
using namespace std;

// int count = 0;
// 使用互斥量加锁
std::mutex mtx;
void func(int &count)
{
    for (int i = 0; i < 10000; i++)
    {
        mtx.lock();
        count++;
        mtx.unlock();
    }
};
int main()
{
    int count = 0;
    /*td::thread 默认会对传递的参数进行拷贝，所以，这里会产生一个临时拷贝，
     导致 func 函数接收到的不是 main 函数里的 count 变量的引用，这就无法实现对同一个 count 变量的操作。
    */
    std::thread t1(func, std::ref(count));
    std::thread t2(func, std::ref(count));
    t1.join();
    t2.join();
    cout << count << endl;
    return 0;
}
